The development of application and system software for data processing systems has traditionally been a time-consuming and somewhat repetitive task, with software developers often having to write or rewrite code to perform well-known user interface and system functions in addition to writing the code utilized to implement the desired new functionality. Recently, object-oriented programming (OOP) has emerged as a dominant new programming paradigm that enables the rapid development and implementation of functionality while permitting the customization and reuse of objects.
The power of OOP as a software development philosophy is realized chiefly through object frameworks, which provide a collection of base object classes that can be selectively utilized by a system developer to create a software system, much like a hardware developer might construct a desktop computer from standard hardware components. Object frameworks are particularly advantageous when utilized within a distributed computing environment in which multiple, possibly heterogeneous, computer systems are interconnected to allow system hardware and software resources to be shared between computer systems. In order to permit programs written in multiple diverse languages to utilize object classes defined within a single object framework, it is necessary to develop a minimum level of object standardization, thereby enabling, at least to some degree, the interoperability of object-oriented software. One organization that is working to establish industry guidelines and object management specifications to provide a common object framework for application development is the Object Management Group (OMG). The specifications promulgated by OMG enable the reusability, portability, and interoperability of object-based software in heterogeneous distributed computing environments (HDCE). An example of a commercially available object framework that conforms to OMG specifications is the Distributed System Object Model (DSOM), which is described, for example, in the "SOM Objects Toolkit version 3.0 Programmer's Guide, Volume 1: SOM and DSOM", available from International Business Machines Corporation.
The Object Management Group (OMG) defines an industry standard for Life Cycle Services in "CORBAservices: Common Object Services Specification", OMG Document No. 95-3-31. Within the OMG Life Cycle Services standard, a number of object-oriented programming interfaces are defined in support of the creation and destruction of objects within a heterogeneous distributed computing environment (HDCE). Among the interfaces introduced within the OMG Life Cycle Services standard is the GenericFactory interface, which provides a standard service that can be utilized by applications to create an object within the heterogeneous distributed computing environment (HDCE). The OMG GenericFactory interface introduces an operation called create.sub.-- object, which returns a newly created object. This operation takes as input two parameters, a Key and a Criteria, where the key defines what to create and the Criteria defines additional specifics, such as how to initialize the object. In general, any implementation of the GenericFactory create.sub.-- object operation would have to perform three unique steps, those being 1) finding an appropriate object specific factory to use to create the object, interacting with the object factory to create the object and 3) interacting with the object to ensure it is properly initialized prior to returning it to the requester.
The OMG specification provides further information that relates to these steps. Relative to finding the appropriate object specific factory to use, the specification indicates that the Key parameter is used to define what to create, such as the interface and/or implementation the created object is to support. Where that object is to be created (the scope within which the object should be created) is defined by the GenericFactory itself. Therefore, the GenericFactory defines "where" and the Key parameter defines "what" to create. Relative to interacting with the object specific factory, the OMG specification gives no guidance, and it is assumed that the GenericFactory implementation knows how to interact with the object specific factory. Relative to initialization of the object, the OMG specification suggests that the Criteria parameter be used to pass in initialization values, but again it is assumed that the GenericFactory knows how to interact with the object to initialize it.
Although the definition and guidance given by the OMG specification for GenericFactory, and in particular the create.sub.-- object operation, is useful and highly desirable, it does not sufficiently define the interface to allow for reuse of implementation. Any two implementations of create.sub.-- object that differ only slightly in any one of the three major steps requires an entire reimplementation of the create.sub.-- object operation. Consequently, it would be desirable to provide an interface capable of enabling a high degree of implementation reuse by dividing the create.sub.-- object operation into its elemental parts.